home *** CD-ROM | disk | FTP | other *** search
/ Internet.Works 41 / Issue 41.iso / pc / PCSoftware / Netscape 6 Official Release / nim.xpi / bin / chrome / aim.jar / content / aim / AimABTab.js < prev    next >
Encoding:
JavaScript  |  2000-10-05  |  6.1 KB  |  197 lines

  1. //var RDF = Components.classes['@mozilla.org/rdf/rdf-service;1'].getService();
  2. //RDF = RDF.QueryInterface(Components.interfaces.nsIRDFService);
  3. //var aim = RDF.GetDataSource("rdf:AIM");
  4. var container = Components.classes['@mozilla.org/rdf/container;1'].createInstance();
  5. container = container.QueryInterface(Components.interfaces.nsIRDFContainer);
  6. container.Init(AimDataSource, RDF.GetResource("NC:AIM/BuddyList"));
  7. var gScreenName;
  8. var gGroupArray;
  9. var abCard;
  10. var aimABInfo;
  11. var gGroupInitState = new Array();
  12. var pIAimBuddy = pIIMManager.QueryInterface(Components.interfaces.nsIAimBuddy);  
  13.  
  14. function OnLoadABTab()
  15. {
  16.   dump("Calling OnLoadABTab\n");
  17.  
  18.   // Initialize online state
  19.   var target = AimDataSource.GetTarget(AimSession, SessionState, true);
  20.   var state = target.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
  21.  
  22.   if (!(state == "Online" || "OnlineAway" == state))
  23.   {
  24.      document.getElementById("OnlineOrg").setAttribute("OnlineState", "Offline");
  25.      document.getElementById("OfflineOrg").setAttribute("OnlineState", "Offline");
  26.   }
  27.   else // we're online
  28.   {
  29.     RegisterSaveListener(OnUnloadABTab);
  30.     document.getElementById("OnlineOrg").setAttribute("OnlineState", "Online");
  31.     document.getElementById("OfflineOrg").setAttribute("OnlineState", "Online");
  32.     // editCard is in mozilla/ mailnews/ addrbook/ resources/ content/ abCardOverlay.js 
  33.     abCard = editCard.card;
  34.     // pIIMManager is in Aim.js
  35.     aimABInfo = pIIMManager.QueryInterface(Components.interfaces.nsIAimABInfo);
  36.  
  37.     try
  38.         { gScreenName = aimABInfo.GetScreenNameFromABURI(abCard.cardURI); }
  39.     catch(ex)
  40.       { gScreenName = ""; }
  41.      setTimeout('BuildGroupFrame()',50);
  42.  
  43.      document.getElementById('ScreenName').setAttribute("value", gScreenName);
  44. //   document.getElementById('ScreenName').setAttribute("disabled", true);
  45. //   document.getElementById('BuddyListCheckbox').checked = true;
  46. //   document.getElementById('BuddyListCheckbox').disabled = true;
  47. //   document.getElementById('profile').disabled = true;
  48.   }
  49. }
  50.  
  51. function OnUnloadABTab()
  52. {
  53.   dump("Calling OnUnloadABTab\n");
  54.   var popup = null;
  55.   var uri = null;
  56.   try {
  57.     uri = abCard.cardURI;
  58.   }
  59.   catch (e) 
  60.   {
  61.     // If this is a New Addressbook card, then we need to grab the URI
  62.     popup = document.getElementById('abPopup');
  63.     if ( popup )
  64.     {
  65.       uri = popup.getAttribute('data');
  66.     }
  67.   }
  68.   var changedScreenName = false;
  69.   if (gScreenName && (gScreenName != document.getElementById('ScreenName').value))
  70.   {
  71.     changedScreenName = true;
  72.     aimABInfo.RemoveABURIFromScreenName(gScreenName, uri);
  73.   }
  74.   gScreenName = document.getElementById('ScreenName').value;
  75.   aimABInfo.SaveScreenNameAndABURI(gScreenName, uri);
  76.  
  77.   var currentlyChecked;
  78. for ( var i=0; i < gGroupArray.length; i++ ) 
  79. {
  80.     currentlyChecked = GetCheckBoxState( gGroupArray, i );
  81.  
  82.     // if the box is checked AND it was not previously checked (or the user changed the IM screen name, add the buddy to the group
  83.     if (currentlyChecked && (!gGroupInitState[i] || changedScreenName)) 
  84.         {
  85.         try 
  86.                {
  87.               //pIAimBuddy.AddBuddy(gGroupArray[i], gScreenName, null, aimInsertionStyles().InsertEnd);}
  88.         aimBuddyAddBuddyAfter(gGroupArray[i], gScreenName, null);}
  89.         catch (e) 
  90.             { dump("error adding buddy\n");
  91.         }
  92.                 }
  93.         // if it was checked before, but not checked now, remove the buddy unless the user changed im screen names
  94.         else if( !currentlyChecked && gGroupInitState[i] && !changedScreenName)
  95.         {
  96.               try
  97.             { 
  98.         aimBuddyRemoveBuddy(gGroupArray[i], gScreenName);
  99.          }
  100.               catch (e)
  101.             { dump("error removing buddy\n");
  102.         }
  103.         }
  104. }
  105. }
  106.  
  107. function BuildGroupFrame()    
  108. {
  109. //  if(gScreenName == "")
  110. //    return;
  111.         if(document.getElementById("AddBuddyGroupList").childNodes.length > 0)
  112.       return;
  113.  
  114.     var a = new Array();
  115.     var i = 0;
  116.     gGroupArray = a;
  117.  
  118.     var enumerator = container.GetElements();
  119.     while (enumerator.hasMoreElements()) 
  120.         {
  121.         var element = enumerator.getNext();
  122.         var resource = element.QueryInterface(Components.interfaces.nsIRDFResource);
  123.         var attr = AimDataSource.GetTarget(resource, 
  124.             RDF.GetResource("http://home.netscape.com/NC-rdf#Name"), true);
  125.         if (attr)
  126.             attr = attr.QueryInterface(Components.interfaces.nsIRDFLiteral);
  127.         if (attr) 
  128.         {
  129.             attr = attr.Value;
  130.             a[ i ] = attr;
  131.             i = i + 1;
  132.         }
  133.     }
  134.     CreateGroupList( a );
  135. }
  136. function CreateGroupList( a )
  137. {
  138.         listDocument = document.getElementById("AddBuddyGroupList")
  139.         dump("listDocument"+listDocument.nodeName+"\n")
  140.         listDocument.appendChild(document.createElement("spring"))
  141.  
  142.         for ( var i=0; i < a.length; i++ ) {
  143.                 chkboxname = "checkBox" + a[i];
  144.                 var inBudGroup = new Object();
  145.         if ("" != gScreenName)
  146.         {
  147.                     pIAimBuddy.BuddyIsInGroup(gScreenName, a[i], inBudGroup);
  148.         }
  149.  
  150.                 outputElement = document.createElement('checkbox')
  151.                 outputElement.setAttribute('id',chkboxname)
  152.                 outputElement.setAttribute('name',a[i])
  153.                 outputElement.setAttribute('value',a[i])
  154.  
  155.                 if (inBudGroup.value == true) {
  156.             outputElement.setAttribute('checked',true)
  157.             gGroupInitState[i] = true;
  158.         }
  159.         else
  160.             gGroupInitState[i]=false;
  161.                         listDocument.appendChild(outputElement)
  162.         }
  163.         listDocument.appendChild(document.createElement("spring"))
  164. }       
  165.  
  166.  
  167. function GetCheckBoxState( a, i )
  168. {
  169.     chkboxname = "checkBox" + a[i];
  170.     chkbox = document.getElementById(chkboxname);
  171.     return( chkbox.checked );
  172. }
  173.  
  174. // for later 
  175.  
  176. function FindSelectedGroup()
  177. {
  178.     // Locate selection in setup list
  179.     // XXX There must be a better way to do this
  180.  
  181.     var selectedGroup = null;
  182.     var selectedBuddy = null;
  183.     var tree = window.tree;
  184.     dump( "Tree is " + tree + "\n" );
  185.     DumpDOM( tree );
  186.     var groups = tree.childNodes[2].childNodes;
  187.  
  188.     for (var i = 0; i != groups.length; i++) {
  189.         if (groups[i].getAttribute("selected") == "true") {
  190.             selectedGroup = groups[i].getAttribute("Name");
  191.             break;
  192.         }
  193.     }
  194.     return( selectedGroup );
  195. }
  196.  
  197.